#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;

//class Solution {
//public:
//    int hash[100001] = { 0 };
//    int totalFruit(vector<int>& f)
//    {
//        int n = f.size();
//        int kinds = 0;
//        int ret = 0;
//        for (int left = 0, right = 0; right < n; right++)
//        {
//
//            if (hash[f[right]] == 0)
//                kinds++;
//            hash[f[right]]++;
//            while (kinds > 2)
//            {
//                hash[f[left]]--;
//                if (hash[f[left]] == 0)
//                    kinds--;
//                left++;
//            }
//            ret = max(right - left + 1, ret);
//        }
//        return ret;
//    }
//};


class Solution {
public:
    vector<int> findAnagrams(string s, string p)
    {
        int hash1[26] = { 0 };
        int hash2[26] = { 0 };
        int n = s.size();
        int m = p.size();
        vector<int> ret;

        for (auto& e : p)
            hash1[e - 'a']++;

        cout << endl;

        for (int left = 0, right = 0; right < n; right++)
        {
            hash2[s[right] - 'a']++;
            if (right - left + 1 == m)
            {
                int i = 0;
                for (i = 0; i < 26; i++)
                {
                    if (hash1[i] != hash2[i])
                        break;
                }

                if (i == 26)
                    ret.push_back(left);
                hash2[s[left] - 'a']--;
                left++;
            }
        }
        return ret;
    }
};

int main()
{

    return 0;
}
